package com.wman.sheep.common.imageloder;

import android.content.Context;

import com.bumptech.glide.Glide;
import com.bumptech.glide.Priority;
import com.bumptech.glide.load.data.DataFetcher;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.model.stream.StreamModelLoader;
import com.wman.sheep.common.application.AbsAppContext;

import java.io.IOException;
import java.io.InputStream;

/**
 * 作者：Administrator on 2016/9/20 09:54
 * 邮箱：wang1991jian@gmial.com
 * 描述：using {@link Glide} to load image
 */
public class GlideImageLoaderStrategy implements BaseImageLoaderStrategy {
    @Override
    public void loadImage(Context ctx, ImageLoader img) {

//        boolean flag= SettingUtil.getOnlyWifiLoadImg(ctx);
        //如果不是在wifi下加载图片，直接加载
//        if(!flag){
//            loadNormal(ctx,img);
//            return;
//        }

        int strategy = img.getWifiStrategy();
        if (strategy == ImageLoaderUtil.LOAD_STRATEGY_ONLY_WIFI) {
            int netType = AbsAppContext.getNetworkType();
            //如果是在wifi下才加载图片，并且当前网络是wifi,直接加载
            if (netType == 1) {
                loadNormal(ctx, img);
            } else {
                //如果是在wifi下才加载图片，并且当前网络不是wifi，加载缓存
                loadCache(ctx, img);
            }
        } else {
            //如果不是在wifi下才加载图片
            loadNormal(ctx, img);
        }

    }


    /**
     * load image with Glide
     */
    private void loadNormal(Context ctx, ImageLoader img) {
        Glide.with(ctx)
                .load(img.getUrl())
                .dontAnimate()
                .placeholder(img.getPlaceHolder()) //占位符
                .error(img.getPlaceHolder())       //错误占位符
//                .crossFade()//平滑和养眼动画默认的持续时间是 100毫秒
//                .dontAnimate()//没有任何淡入淡出效果
//                .centerCrop().fitCenter()//裁剪
//                .skipMemoryCache(true)//跳过内存缓存
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .priority(Priority.HIGH)//优先级
//                .thumbnail(1f)//缩略图,这里是100%大小
                .into(img.getImgView());


//        .load(img.getUrl())
//                .diskCacheStrategy(DiskCacheStrategy.ALL)
//                .placeholder(img.getPlaceHolder())
//                .error(img.getPlaceHolder())
//                .crossFade().into(img.getImgView());
    }


    /**
     * load cache image with Glide
     */
    private void loadCache(Context ctx, ImageLoader img) {
        Glide.with(ctx).using(new StreamModelLoader<String>() {
            @Override
            public DataFetcher<InputStream> getResourceFetcher(final String model, int i, int i1) {
                return new DataFetcher<InputStream>() {
                    @Override
                    public InputStream loadData(Priority priority) throws Exception {
                        throw new IOException();
                    }

                    @Override
                    public void cleanup() {

                    }

                    @Override
                    public String getId() {
                        return model;
                    }

                    @Override
                    public void cancel() {

                    }
                };
            }
        }).load(img.getUrl())
                .placeholder(img.getPlaceHolder()) //占位符
                .error(img.getPlaceHolder())       //错误占位符
  //              .crossFade()//平滑和养眼动画默认的持续时间是 100毫秒
               .dontAnimate()//没有任何淡入淡出效果
                .override(640, 428)//调整图片大小
//                .centerCrop().fitCenter()//裁剪
//                .skipMemoryCache(true)//跳过内存缓存
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .priority(Priority.HIGH)//优先级
//                .thumbnail(1f)//缩略图,这里是100%大小
                .into(img.getImgView());
    }
}